﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Work2
{
//    编写一个程序，用以接收用户输入的两个浮点型的数值，一个值表示用户想要存放在银行账户中金额，
//另一个值表示用户想要从银行账户中提取的金额。
//实现存取款功能，
//用户功能选择：1、存款，2、取款
//取款时：
//当用户想要提取的金额大于余额时，请手动抛出一个ArgumentOutOfRangeException 参数超出范围的异常，
//异常信息可以写“取款金额大于余额，请重新输入”
//，如此以确保取款金额始终不大于当前余额。
//操作结束，打印输出余额是多少。
//最后再添加catch一般异常 Exception，使得数据类型转换的异常也能被捕获到。
    internal class Program
    {
        static void Main(string[] args)
        {
            Bank();
            Console.ReadKey();
        }
        public static void Bank()
        {
            double deposit=0;        //存款金额
            double withdrawal;       //取款金额
            double balance=0;        //账户余额
            Console.WriteLine("欢迎来到天地银行。");
            Console.WriteLine("欢迎使用本系统！");
            bool b = true;
            bool a;
            while (b)
            {
                Console.WriteLine("1.存款   2.取款    3.退出");
                int Key=int.Parse(Console.ReadLine());
                switch (Key)
                {
                    case 1:
                        Console.WriteLine("请问你要存多少钱：");
                        deposit=int.Parse(Console.ReadLine());
                        balance += deposit;
                        Console.WriteLine($"账户金额为：{balance}￥");
                        break;

                    case 2:
                        a=true;
                        while (a)
                        {
                            try
                            {
                                Console.WriteLine("请问你要取出多少钱：");
                                withdrawal = int.Parse(Console.ReadLine());
                                if(deposit<withdrawal)
                                {
                                    Console.WriteLine("取款失败！");
                                    throw new ArgumentOutOfRangeException();
                                }
                                balance-=withdrawal;
                                a = false;
                            }
                            catch (ArgumentOutOfRangeException AOORE)
                            {
                                Console.WriteLine("请重新输入取款金额！");
                                Console.WriteLine(AOORE.Message);  
                            }
                            catch (Exception E)
                            {
                                Console.WriteLine(E.Message);
                            }
                            finally
                            {
                                Console.WriteLine("您的账号里剩余金额为{0}￥",balance);
                            }
                        }                       
                        break;
                    case 3:
                        Console.WriteLine("感谢您的使用！");
                        b= false;
                        break;
                    default: Console.WriteLine("尚未开发该功能！");
                        break;
                }
            }
        }
    }
}
